perm filename GREEKU.MF[CM,DEK]1 blob
sn#788844 filedate 1985-04-13 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00013 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00003 00002 % Computer Modern Greek caps, analogous to the uppercase Roman letters.
C00004 00003 cmchar "Uppercase Greek Gamma"
C00006 00004 cmchar "Uppercase Greek Delta"
C00008 00005 cmchar "Uppercase Greek Theta"
C00010 00006 cmchar "Uppercase Greek Lambda"
C00013 00007 cmchar "Uppercase Greek Xi"
C00016 00008 cmchar "Uppercase Greek Pi"
C00018 00009 cmchar "Uppercase Greek Sigma"
C00020 00010 cmchar "Uppercase Greek Upsilon"
C00022 00011 cmchar "Uppercase Greek Phi"
C00024 00012 cmchar "Uppercase Greek Psi"
C00026 00013 cmchar "Uppercase Greek Omega"
C00028 ENDMK
C⊗;
% Computer Modern Greek caps, analogous to the uppercase Roman letters.
% Character codes \0000 through \0012 are generated,
% using plain \TeX's standard text font layout conventions.
cmchar "Uppercase Greek Gamma";
beginchar(oct"000",11u#-width_adj#,cap_height#,0);
italcorr cap_height#*slant-beak_jut#-.5u#;
adjust_fit(cap_serif_fit#,0);
h:=round(h-stem_corr);
penpos1(cap_stem-tiny,0); penpos2(cap_stem-tiny,0);
pickup tiny.nib; top y1=h; bot y2=0;
lft x1l=lft x2l=round max(2u,3u-.5cap_stem);
filldraw stroke z1e..z2e; % stem
pickup crisp.nib; penpos3(slab-crisp,90); penpos4(hair-crisp,0);
top y3r=h; x3=x1; rt x4r=round(w-u); y4=good.y(y3l-beak);
arm(3,4,e,beak_darkness,beak_jut); % arm and beak
if serifs: cup_serif(1,2,a,1/3,cap_jut,b,1/3,.5cap_jut); % upper serif
cup_serif(2,1,c,1/3,cap_jut,d,1/3,1.25cap_jut); fi % lower serif
math_fit(0,ic#-2.5u#); penlabels(1,2,3,4); endchar;
cmchar "Uppercase Greek Delta";
beginchar(oct"001",15u#,cap_height#,0); less_rounded;
adjust_fit(0,0);
numeric left_stem,alpha;
left_stem=cap_hair if hefty: -3stem_corr fi;
x1l=w-x4r=.75u; y1=y4=0;
x2-x1=x4-x3; x3r=x2r+apex_corr; y2=y3=h+apex_o;
alpha=diag_ratio(2,left_stem,y2-y1,x4r-x1l-apex_corr);
penpos1(alpha*left_stem,0); penpos2(alpha*left_stem,0);
penpos3(alpha*cap_stem,0); penpos4(alpha*cap_stem,0);
fill diag_end(2l,1l,1,1,4r,3r)--diag_end(4r,3r,1,1,2l,1l)--cycle; % triangle
z0=whatever[z1r,z2r]=whatever[z3l,z4l];
y5=y6=.85cap_stem; z5=whatever[z1r,z2r]; z6=whatever[z3l,z4l];
if y0<h-cap_notch_cut: y0:=h-cap_notch_cut;
unfill z0+.5right{down}...{z4-z3}z6--z5{z2-z1}
...{up}z0+.5left--cycle; % counter
else: unfill z0--z5--z6--cycle; fi % counter
penlabels(0,1,2,3,4,5,6); endchar;
cmchar "Uppercase Greek Theta";
beginchar(oct"002",14u#,cap_height#,0);
italcorr .7cap_height#*slant-.5u#;
adjust_fit(0,0);
numeric reduced_curve,reduced_stem;
reduced_curve=round(cap_curve-2stem_corr);
reduced_stem=max(crisp.breadth, round .85cap_stem);
penpos1(vair,90); penpos3(round(vair+.5vair_corr),-90);
penpos2(reduced_curve,180); penpos4(reduced_curve,0);
if monospace: x2r=round 1.5u;
interim superness:=sqrt superness; % make |"O"|, not |"0"|
else: x2r=round u; fi
x4r=w-x2r; x1=x3=.5w; y1r=h+o; y2=y4=.5h-vair_corr; y3r=-o;
penstroke pulled_super_arc.e(1,2)(.5superpull)
& pulled_super_arc.e(2,3)(.5superpull)
& pulled_super_arc.e(3,4)(.5superpull)
& pulled_super_arc.e(4,1)(.5superpull) & cycle; % bowl
pickup crisp.nib;
penpos5(reduced_stem-crisp,90); penpos6(reduced_stem-crisp,90);
lft x5=w-rt x6=round(x2l+u)+1; y5=y6=.5[y1l,y3l];
filldraw stroke z5e..z6e; % bar
if serifs: penpos7(hair-crisp,0); penpos8(hair-crisp,0);
penpos9(hair-crisp,0); penpos10(hair-crisp,0);
x7l=x8l=x5; x9r=x10r=x6; y7-y5r=y9-y6r=y5l-y8=y6l-y10=round .05h;
filldraw stroke z7e..z8e; % left serif
filldraw stroke z9e..z10e; fi % right serif
math_fit(-.3cap_height#*slant-.5u#,ic#-.5u#);
penlabels(1,2,3,4,5,6,7,8,9,10); endchar;
cmchar "Uppercase Greek Lambda";
beginchar(oct"003",11u#,cap_height#,0); less_rounded;
adjust_fit(cap_serif_fit#,cap_serif_fit#);
numeric left_stem,outer_jut,alpha;
left_stem=cap_hair if hefty: -3stem_corr fi;
outer_jut=.7cap_jut; x1l=w-x4r=l+letter_fit+outer_jut+.5u; y1=y4=0;
x2-x1=x4-x3; x3r=x2r+apex_corr; y2=y3=h+apex_o;
alpha=diag_ratio(2,left_stem,y2-y1,x4r-x1l-apex_corr);
penpos1(alpha*left_stem,0); penpos2(alpha*left_stem,0);
penpos3(alpha*cap_stem,0); penpos4(alpha*cap_stem,0);
z0=whatever[z1r,z2r]=whatever[z3l,z4l];
if y0<h-cap_notch_cut: y0:=h-cap_notch_cut;
fill z0+.5right{down}...{z4-z3}diag_end(3l,4l,1,1,4r,3r)
--diag_end(4r,3r,1,1,2l,1l)--diag_end(2l,1l,1,1,1r,2r){z2-z1}
...{up}z0+.5left--cycle; % left and right diagonals
else: fill z0--diag_end(0,4l,1,1,4r,3r)--diag_end(4r,3r,1,1,2l,1l)
--diag_end(2l,1l,1,1,1r,0)--cycle; fi % left and right diagonals
if serifs: numeric inner_jut; pickup tiny.nib;
prime_points_inside(1,2); prime_points_inside(4,3);
if rt x1'r+cap_jut+.5u+2≤lft x4'l-cap_jut: inner_jut=cap_jut;
else: rt x1'r+inner_jut+.5u+2=lft x4'l-inner_jut; fi
cup_serif(1',2,a,1/2,outer_jut,b,.6,inner_jut)(dark); % left serif
cup_serif(4',3,c,1/2,inner_jut,d,1/3,outer_jut); fi % right serif
penlabels(0,1,2,3,4,5,6); endchar;
cmchar "Uppercase Greek Xi";
beginchar(oct"004",11u#,cap_height#,0); less_rounded;
italcorr cap_height#*slant-.5u#;
adjust_fit(0,0);
h:=round(h-2stem_corr);
numeric shaved_stem; pickup tiny.nib;
shaved_stem= if serifs: round(.9[vair,.85cap_stem]) else: cap_stem fi;
penpos1(shaved_stem-tiny,90); penpos2(shaved_stem-tiny,90);
penpos3(shaved_stem-tiny,90); penpos4(shaved_stem-tiny,90);
penpos5(shaved_stem-tiny,90); penpos6(shaved_stem-tiny,90);
lft x1=lft x3=w-rt x2=w-rt x4=round u; lft x5=w-rt x6=round 2u;
top y1r=top y2r=h; bot y3l=bot y4l=0; top y5r=top y6r=round(.5h+.5shaved_stem);
filldraw stroke z1e..z2e; % upper bar
filldraw stroke z3e..z4e; % lower bar
filldraw stroke z5e..z6e; % middle bar
if serifs: numeric xjut;
if bot y1l-.85cap_jut>top y5r+.85cap_jut: xjut=.85cap_jut;
else: bot y1l-xjut=top y5r+xjut+2epsilon; fi
pickup crisp.nib;
penpos1'(hair-crisp,0); penpos2'(hair-crisp,0); y1'=y2'=y1;
penpos7(hair-crisp,0); penpos8(hair-crisp,0); x7=x1'=w-x8=w-x2'; y7=y8;
lft x7l=round u; bot y7=h-shaved_stem-xjut;
filldraw stroke z1'e..z7e; filldraw stroke z2'e..z8e; % upper serifs
penpos3'(hair-crisp,0); penpos4'(hair-crisp,0); y3'=y4'=y3;
penpos9(hair-crisp,0); penpos10(hair-crisp,0); x9=x3'=w-x10=w-x4'; y9=y10;
lft x9l=round u; top y9=shaved_stem+xjut;
filldraw stroke z3'e..z9e; filldraw stroke z4'e..z10e; % lower serifs
penpos11(hair-crisp,0); penpos12(hair-crisp,0); y11=y12;
penpos13(hair-crisp,0); penpos14(hair-crisp,0); y13=y14;
lft x11l=lft x13l=w-rt x12r=w-rt x14r=round 2u;
top y11-bot y13=shaved_stem+1.8xjut; .5[y11,y13]=y5;
filldraw stroke z11e..z13e; filldraw stroke z12e..z14e; fi % middle serifs
math_fit(0,.5ic#); penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14); endchar;
cmchar "Uppercase Greek Pi";
beginchar(oct"005",13u#+width_adj#,cap_height#,0);
italcorr cap_height#*slant-cap_serif_fit#+cap_jut#-2.5u#+min(.5cap_stem#,u#);
adjust_fit(cap_serif_fit#,cap_serif_fit#);
h:=round(h-stem_corr);
penpos1(cap_stem-tiny,0); penpos2(cap_stem-tiny,0);
penpos3(cap_stem-tiny,0); penpos4(cap_stem-tiny,0);
pickup tiny.nib; top y1=top y3=h; bot y2=bot y4=0;
lft x1l=lft x2l=round max(2u,3u-.5cap_stem); x3=x4=w-x1;
filldraw stroke z1e..z2e; % left stem
filldraw stroke z3e..z4e; % right stem
penpos5(cap_bar,90); penpos6(cap_bar,90);
x5=x1; x6=x3; y5r=y6r=h;
fill stroke z5e--z6e; % bar
if serifs: numeric inner_jut;
if rt x1r+cap_jut+.5u+2≤lft x3l-cap_jut: inner_jut=cap_jut;
else: rt x1r+inner_jut+.5u+2=lft x3l-inner_jut; fi
cup_serif(1,2,a,1/3,cap_jut,b,1/3,epsilon); % upper left serif
cup_serif(2,1,c,1/3,cap_jut,d,1/3,inner_jut); % lower left serif
cup_serif(3,4,e,1/3,epsilon,f,1/3,cap_jut); % upper left serif
cup_serif(4,3,g,1/3,inner_jut,h,1/3,cap_jut); fi % lower left serif
math_fit(0,.5ic#); penlabels(1,2,3,4,5,6); endchar;
cmchar "Uppercase Greek Sigma";
beginchar(oct"006",13u#,cap_height#,0); less_rounded;
italcorr cap_height#*slant-beak_jut#-.5u#;
adjust_fit(0,0);
numeric bot_arm_thickness;
bot_arm_thickness=round(.25[slab,.85cap_stem]);
pickup tiny.nib; lft x1l=round u; x1l=x2l=x4l;
top y1=h; bot y2=h-slab; bot y4=0; x3l-x1l=4/11(w-2u); y3=.5h;
numeric alpha[]; alpha1=((x3l-x1l)++(y2-y3))/(y2-y3);
penpos1(alpha1*(cap_stem-tiny),0); penpos2(alpha1*(cap_stem-tiny),0);
penpos3(alpha1*(cap_stem-tiny),0);
alpha2=diag_ratio(1,cap_hair-tiny,y3-y4,x3r-x4l);
penpos4(alpha2*(cap_hair-tiny),0);
z0=whatever[z2l,z3l]=z4l+whatever*(z3r-z4r);
filldraw z1l--z2l--z0--z4l--z4r--z3r--z2r--z1r--cycle; % diagonals
pickup crisp.nib; penpos5(slab-crisp,90); penpos6(hair-crisp,0);
top y5r=h; x5=x1; rt x6r=round(w-u); y6=good.y(y5l-beak);
arm(5,6,a,beak_darkness,beak_jut); % upper arm and beak
penpos7(bot_arm_thickness-crisp,-90); penpos8(hair-crisp,0);
bot y7r=0; z7l=whatever[z4,z3]; x7r:=x4; x8=x6; y8=good.y(y7l+beak);
arm(7,8,b,beak_darkness,beak_jut); % lower arm and beak
math_fit(0,.5ic#); penlabels(0,1,2,3,4,5,6,7,8); endchar;
cmchar "Uppercase Greek Upsilon";
beginchar(oct"007",14u#,cap_height#,0);
italcorr .8cap_height#*slant-.5u#;
adjust_fit(0,0);
penpos1(cap_stem-tiny,0); penpos2(cap_stem-tiny,0);
pickup tiny.nib; y1=.5h; bot y2=0;
lft x1l=lft x2l=round(.5w-.5cap_stem);
filldraw stroke z1e..z2e; % stem
penpos3(.6cap_stem,0); penpos4(.75cap_curve,90); penpos5(cap_hair,180);
z3l=lft z1l; x5r=round u; y5=bot .8h; x4=.61803[x3l,x5l]; y4r=h+o;
penpos5'(cap_hair,180); x5'=x5; y5'=h;
fill z3r{up}...z4r{left}...{down}diag_end(5'r,5r,1,1,5l,5'l){up}
...{right}z4l...{down}z3l--cycle; % left arc
penpos6(.6cap_stem,0); penpos7(.75cap_curve,-90); penpos8(cap_hair,-180);
z6r=rt z1r; x8=w-x5; y8=y5; x7=w-x4; y7=y4;
penpos8'(cap_hair,-180); x8'=x8; y8'=h;
fill z6r{up}...z7r{right}...{down}diag_end(8'r,8r,1,1,8l,8'l){up}
...{left}z7l...{down}z6l--cycle; % right arc
if serifs: cup_serif(2,1,a,1/3,1.25cap_jut,b,1/3,1.25cap_jut); fi % serif
math_fit(-.8cap_height#*slant-.5u#,ic#-2.5u#);
penlabels(1,2,3,4,5,6,7,8); endchar;
cmchar "Uppercase Greek Phi";
beginchar(oct"010",13u#,cap_height#,0);
italcorr .5cap_height#*slant-.5u#;
adjust_fit(0,0);
numeric shaved_stem,reduced_curve;
shaved_stem=cap_stem-round 2stem_corr;
reduced_curve=cap_curve-round stem_corr;
penpos1(shaved_stem-tiny,0); penpos2(shaved_stem-tiny,0);
pickup tiny.nib; top y1=h; bot y2=0;
lft x1l=lft x2l=round(.5w-.5cap_stem);
filldraw stroke z1e..z2e; % stem
penpos3(vair,90); penpos5(vair,-90);
penpos4(reduced_curve,180); penpos6(reduced_curve,0);
x4r=round u; x6r=w-x4r; x3=x5=.5w;
y3r=round(.8h+.5vair); y4=y6=.5[y3,y5]; y5r=round(.2h-.5vair);
penstroke pulled_super_arc.e(3,4)(.5superpull)
& pulled_super_arc.e(4,5)(.5superpull)
& pulled_super_arc.e(5,6)(.5superpull)
& pulled_super_arc.e(6,3)(.5superpull) & cycle; % bowl
if serifs: cup_serif(1,2,a,1/3,1.25cap_jut,b,1/3,1.25cap_jut); % upper serif
cup_serif(2,1,c,1/3,1.25cap_jut,d,1/3,1.25cap_jut); fi % lower serif
math_fit(-.5cap_height#*slant-.5u#,ic#); penlabels(1,2,3,4,5,6); endchar;
cmchar "Uppercase Greek Psi";
beginchar(oct"011",14u#,cap_height#,0);
italcorr .8cap_height#*slant-.5u#;
adjust_fit(0,0);
numeric shaved_stem;
shaved_stem=cap_stem-round 2stem_corr;
penpos1(shaved_stem-tiny,0); penpos2(shaved_stem-tiny,0);
pickup tiny.nib; top y1=h; bot y2=0;
lft x1l=lft x2l=round(.5w-.5cap_stem);
filldraw stroke z1e..z2e; % stem
penpos3(shaved_stem-tiny,0); penpos4(shaved_stem-tiny,0);
penpos5(shaved_stem-tiny,0); x5=x1; y5=.2h;
penpos6(shaved_stem-tiny,0); penpos7(shaved_stem-tiny,0);
lft x3l=round u; x7=w-x3; lft x4l=round(3u-.5shaved_stem); x6=w-x4;
y3=y7=good.y .8h; y4=y6=.6h;
filldraw stroke z3e{right}...z4e{down}...z5e{right}; % left stroke
filldraw stroke z7e{left}...z6e{down}...z5e{left}; % right stroke
if serifs: cup_serif(1,2,a,1/3,1.25cap_jut,b,1/3,1.25cap_jut); % upper serif
cup_serif(2,1,c,1/3,1.25cap_jut,d,1/3,1.25cap_jut); fi % lower serif
math_fit(-.8cap_height#*slant-.5u#,.4cap_height#*slant+1.25u#);
penlabels(1,2,3,4,5,6); endchar;
cmchar "Uppercase Greek Omega";
beginchar(oct"012",13u#,cap_height#,0);
italcorr .75cap_height#*slant-.5u#;
adjust_fit(0,0);
pickup tiny.nib; penpos1(vair-tiny,90);
penpos2(cap_curve-tiny,180); penpos3(hair-tiny,180);
penpos4(cap_curve-tiny,0); penpos5(hair-tiny,0);
x1=.5w; top y1r=h+o; lft x2r=round u; y2=y4=.7h; x4=w-x2;
rt x3l=round(1/3(w+.5u)+.5hair); bot y3=bot y5=0; x5=w-x3;
filldraw stroke z3e{curl 0}...{up}z2e
& pulled_super_arc.e(2,1)(.5superpull)
& pulled_super_arc.e(1,4)(.5superpull)
& z4e{down}...{curl 0}z5e; % bowl
numeric arm_thickness; path p; p=z3{curl 0}...{up}z2;
arm_thickness=round(if hefty:slab+2stem_corr else:.75[slab,.85cap_stem] fi);
pickup crisp.nib;
penpos6(arm_thickness-crisp,-90); penpos7(fudged.hair-crisp,-180);
bot y6r=0; x6=x3; lft x7r=round u; y7=good.y(y6l+.5beak);
(x,y)=p intersectionpoint((0,y6l)--(w,y6l)); x6l:=x;
arm(6,7,a,.5beak_darkness,-beak_jut); % left arm and beak
penpos8(arm_thickness-crisp,-90); penpos9(fudged.hair-crisp,0);
y8=y6; y9=y7; x8+x6=x9+x7=w; x8l:=w-x6l;
arm(8,9,b,.5beak_darkness,beak_jut); % right arm and beak
math_fit(0,.5ic#); penlabels(1,2,3,4,5,6,7,8,9); endchar;